/**
 * Interface to represent any user of the system, an all purpose container for 
 * all different types of users of the system
 *   
 */
package prefix.util;



/**
 * An interface to be implemented by every object with time references
 * @author Soul
 * 
 */
public interface Timeable {

	public static final long SECOND    = 1*1000;
	public static final long MINUTE    = SECOND*60;
	public static final long HOUR      = MINUTE*60;
	public static final long DAY       = HOUR*24;
	public static final long MONTH     = 30 * DAY;
	public static final long FATST_DAY = 100*SECOND; 
	public static final long APPLICATION_PERIOD = 20*DAY;
	
//	/**
//	 * gets the date when this object was created
//	 * @return Date
//	 */
//	public Date getCreationDate();
//	
//	public void setCreationDate(Date date);
//	/**
//	 * Set the expiration date of this object
//	 * 
//	 * @param date expiration date
//	 */
//	public void setExpirationDate(Date date);
//	
//	/**
//	 * Gets the expiration date of this object
//	 * 
//	 * @return date
//	 */
//	public Date getExpirationDate();
//	
//	/**
//	 * Sets the last time this object was accessed
//	 * 
//	 * @param date access date
//	 */
//	public void setlastAccessDate(Date date);
//	
//	/**
//	 * Returns last access date
//	 * 
//	 * @return last access date
//	 */
//	public Date getLastAccessDate();
	
	public long getAge();
	
	public long getTimeLeftBeforeExpiration();
	
	public boolean isExpired();
	
}
